﻿2026-05-14T11:40:00.2773463Z ##[group]Run pnpm --filter @rebno/client test:e2e
2026-05-14T11:40:00.2774423Z [36;1mpnpm --filter @rebno/client test:e2e[0m
2026-05-14T11:40:00.3544229Z shell: /usr/bin/bash -e {0}
2026-05-14T11:40:00.3544643Z env:
2026-05-14T11:40:00.3544990Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-14T11:40:00.3545556Z   STAGING_URL: https://staging.rebno.decidel.com
2026-05-14T11:40:00.3546734Z   STAGING_INVITE_TOKEN: ***
2026-05-14T11:40:00.3547773Z   UAT_ACCOUNT_A: ***
2026-05-14T11:40:00.3548322Z   UAT_PASSWORD_A: ***
2026-05-14T11:40:00.3548785Z   UAT_ACCOUNT_B: ***
2026-05-14T11:40:00.3549404Z   UAT_PASSWORD_B: ***
2026-05-14T11:40:00.3549729Z ##[endgroup]
2026-05-14T11:40:00.6734338Z 
2026-05-14T11:40:00.6735275Z > @rebno/client@0.1.0 test:e2e /home/runner/work/rebno/rebno/apps/client
2026-05-14T11:40:00.6736301Z > playwright test
2026-05-14T11:40:00.6736560Z 
2026-05-14T11:40:02.1408329Z 
2026-05-14T11:40:02.1409188Z Running 28 tests using 1 worker
2026-05-14T11:40:02.1409828Z 
2026-05-14T11:40:21.6043220Z   ✘   1 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (16.9s)
2026-05-14T11:40:30.6378040Z   ✘   2 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (retry #1) (7.9s)
2026-05-14T11:40:38.8485483Z   ✘   3 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (7.1s)
2026-05-14T11:40:58.9717861Z   ✘   4 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (retry #1) (19.0s)
2026-05-14T11:41:07.1084029Z   ✘   5 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (6.8s)
2026-05-14T11:41:14.2817299Z   ✘   6 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (retry #1) (6.1s)
2026-05-14T11:41:38.6788759Z   ✘   7 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (23.1s)
2026-05-14T11:42:09.9981051Z   ✘   8 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (retry #1) (29.7s)
2026-05-14T11:42:19.7464011Z   ✘   9 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (8.6s)
2026-05-14T11:42:27.9389172Z   ✓  10 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (retry #1) (7.4s)
2026-05-14T11:42:37.3020901Z   ✘  11 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (8.9s)
2026-05-14T11:42:56.4944736Z   ✘  12 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (retry #1) (18.2s)
2026-05-14T11:43:06.3610711Z   ✘  13 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (8.7s)
2026-05-14T11:43:16.0138443Z   ✘  14 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (retry #1) (8.5s)
2026-05-14T11:43:25.8437931Z   ✘  15 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (8.7s)
2026-05-14T11:43:44.8995302Z   ✘  16 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (retry #1) (18.0s)
2026-05-14T11:43:53.1222610Z   ✘  17 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (7.1s)
2026-05-14T11:44:01.4671957Z   ✘  18 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (retry #1) (7.2s)
2026-05-14T11:44:08.0703681Z   ✓  19 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) (5.8s)
2026-05-14T11:44:30.3438530Z   ✘  20 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (21.8s)
2026-05-14T11:44:50.8748938Z   ✘  21 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (retry #1) (19.0s)
2026-05-14T11:45:11.5588365Z   ✘  22 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (19.4s)
2026-05-14T11:45:31.4968419Z   ✘  23 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (retry #1) (18.6s)
2026-05-14T11:45:52.5246697Z   ✘  24 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (19.5s)
2026-05-14T11:46:13.0003896Z   ✘  25 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (retry #1) (18.9s)
2026-05-14T11:46:22.5459370Z   ✘  26 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (8.4s)
2026-05-14T11:46:32.1168173Z   ✘  27 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (retry #1) (8.4s)
2026-05-14T11:46:34.7963363Z   ✓  28 [chromium] › test/e2e/login-contrast.e2e.test.ts:64:3 › LoginScene contrast › heading has ≥ 4.5:1 contrast ratio on #0A0E1A background (1.9s)
2026-05-14T11:46:36.7217243Z   ✓  29 [chromium] › test/e2e/login-contrast.e2e.test.ts:72:3 › LoginScene contrast › username label has ≥ 4.5:1 contrast ratio (1.9s)
2026-05-14T11:46:38.4038424Z   ✓  30 [chromium] › test/e2e/login-contrast.e2e.test.ts:78:3 › LoginScene contrast › password label has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-14T11:46:40.0665176Z   ✓  31 [chromium] › test/e2e/login-contrast.e2e.test.ts:84:3 › LoginScene contrast › username input text has ≥ 4.5:1 contrast ratio (1.6s)
2026-05-14T11:46:41.8349879Z   ✓  32 [chromium] › test/e2e/login-contrast.e2e.test.ts:90:3 › LoginScene contrast › password input text has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-14T11:46:43.5231352Z   ✓  33 [chromium] › test/e2e/login-contrast.e2e.test.ts:96:3 › LoginScene contrast › submit CTA button text has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-14T11:46:45.1905908Z   ✓  34 [chromium] › test/e2e/login-contrast.e2e.test.ts:104:3 › LoginScene contrast › focused input border-color is accent #22D3EE (rgb 34,211,238) (1.6s)
2026-05-14T11:46:56.9009611Z   ✘  35 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (11.2s)
2026-05-14T11:47:09.3528504Z   ✘  36 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (retry #1) (11.2s)
2026-05-14T11:47:15.3076530Z   ✓  37 [chromium] › test/e2e/logout.e2e.test.ts:51:3 › Esc menu › canvas click opens menu (D-24 secondary trigger) (5.2s)
2026-05-14T11:47:22.5515773Z   ✓  38 [chromium] › test/e2e/logout.e2e.test.ts:69:3 › Esc menu › Resume closes menu and re-engages movement without navigating (7.2s)
2026-05-14T11:47:28.4592876Z   ✘  39 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (5.5s)
2026-05-14T11:47:47.7487342Z   ✘  40 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (retry #1) (18.3s)
2026-05-14T11:47:53.5626194Z   ✓  41 [chromium] › test/e2e/sprite-state.e2e.test.ts:48:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate DOM mirror is visible for self (count >= 1) (5.0s)
2026-05-14T11:47:57.9239670Z   ✓  42 [chromium] › test/e2e/sprite-state.e2e.test.ts:61:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate text content matches logged-in username (4.3s)
2026-05-14T11:48:06.9422312Z   ✓  43 [chromium] › test/e2e/ws-kill-reconnect.e2e.test.ts:16:1 › WS-kill: login → kill WS → SDK reconnects within grace → canvas still truthy + chat round-trips (9.0s)
2026-05-14T11:48:07.0068370Z 
2026-05-14T11:48:07.0076680Z 
2026-05-14T11:48:07.0096678Z   1) [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-14T11:48:07.0098005Z 
2026-05-14T11:48:07.0098746Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-14T11:48:07.0099397Z 
2026-05-14T11:48:07.0100453Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0101338Z 
2026-05-14T11:48:07.0101764Z     Expected: >= [32m8[39m
2026-05-14T11:48:07.0102422Z     Received:    [31m0[39m
2026-05-14T11:48:07.0102871Z 
2026-05-14T11:48:07.0103206Z       80 |     cameraDelta,
2026-05-14T11:48:07.0104463Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-14T11:48:07.0105806Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-14T11:48:07.0106798Z          |     ^
2026-05-14T11:48:07.0107270Z       83 |
2026-05-14T11:48:07.0108046Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-14T11:48:07.0109260Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-14T11:48:07.0110647Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-14T11:48:07.0111581Z 
2026-05-14T11:48:07.0112606Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0114259Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/test-failed-1.png
2026-05-14T11:48:07.0116321Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0117167Z 
2026-05-14T11:48:07.0118134Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0119661Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/video.webm
2026-05-14T11:48:07.0121329Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0122093Z 
2026-05-14T11:48:07.0123141Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/error-context.md
2026-05-14T11:48:07.0124343Z 
2026-05-14T11:48:07.0125328Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0127199Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-14T11:48:07.0128361Z     Usage:
2026-05-14T11:48:07.0128753Z 
2026-05-14T11:48:07.0129898Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-14T11:48:07.0131501Z 
2026-05-14T11:48:07.0132400Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0133204Z 
2026-05-14T11:48:07.0134139Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0134951Z 
2026-05-14T11:48:07.0135541Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-14T11:48:07.0136481Z 
2026-05-14T11:48:07.0137534Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0138893Z 
2026-05-14T11:48:07.0139438Z     Expected: >= [32m8[39m
2026-05-14T11:48:07.0140311Z     Received:    [31m0[39m
2026-05-14T11:48:07.0140751Z 
2026-05-14T11:48:07.0141027Z       80 |     cameraDelta,
2026-05-14T11:48:07.0142113Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-14T11:48:07.0144290Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-14T11:48:07.0149999Z          |     ^
2026-05-14T11:48:07.0150640Z       83 |
2026-05-14T11:48:07.0151561Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-14T11:48:07.0152766Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-14T11:48:07.0154138Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-14T11:48:07.0157061Z 
2026-05-14T11:48:07.0158504Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0160182Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0161982Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0166478Z 
2026-05-14T11:48:07.0167569Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0176598Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/video.webm
2026-05-14T11:48:07.0178209Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0178763Z 
2026-05-14T11:48:07.0179716Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/error-context.md
2026-05-14T11:48:07.0180720Z 
2026-05-14T11:48:07.0181863Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0183280Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-14T11:48:07.0184266Z     Usage:
2026-05-14T11:48:07.0184459Z 
2026-05-14T11:48:07.0185502Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-14T11:48:07.0187086Z 
2026-05-14T11:48:07.0187798Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0188330Z 
2026-05-14T11:48:07.0189551Z   2) [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-14T11:48:07.0190545Z 
2026-05-14T11:48:07.0194589Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-14T11:48:07.0199010Z 
2026-05-14T11:48:07.0199847Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0200582Z 
2026-05-14T11:48:07.0200862Z     Expected: >= [32m3[39m
2026-05-14T11:48:07.0201401Z     Received:    [31m1[39m
2026-05-14T11:48:07.0201686Z 
2026-05-14T11:48:07.0201860Z       67 |     unique.size,
2026-05-14T11:48:07.0203090Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-14T11:48:07.0204128Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T11:48:07.0204621Z          |     ^
2026-05-14T11:48:07.0204953Z       70 |
2026-05-14T11:48:07.0205550Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-14T11:48:07.0206573Z       72 |   for (const f of unique) {
2026-05-14T11:48:07.0207398Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-14T11:48:07.0208052Z 
2026-05-14T11:48:07.0208842Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0210239Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T11:48:07.0211825Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0212394Z 
2026-05-14T11:48:07.0213183Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0214507Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T11:48:07.0216374Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0216941Z 
2026-05-14T11:48:07.0217776Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T11:48:07.0218684Z 
2026-05-14T11:48:07.0219482Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0221129Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0222042Z     Usage:
2026-05-14T11:48:07.0222247Z 
2026-05-14T11:48:07.0223222Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0224252Z 
2026-05-14T11:48:07.0224976Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0225820Z 
2026-05-14T11:48:07.0226811Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0227342Z 
2026-05-14T11:48:07.0228049Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0228666Z 
2026-05-14T11:48:07.0228968Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.0229568Z     Expected: visible
2026-05-14T11:48:07.0229969Z     Timeout: 15000ms
2026-05-14T11:48:07.0230417Z     Error: element(s) not found
2026-05-14T11:48:07.0230709Z 
2026-05-14T11:48:07.0230856Z     Call log:
2026-05-14T11:48:07.0231489Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0232449Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.0232952Z 
2026-05-14T11:48:07.0232969Z 
2026-05-14T11:48:07.0233153Z        at fixtures.ts:172
2026-05-14T11:48:07.0233411Z 
2026-05-14T11:48:07.0233584Z       170 |  */
2026-05-14T11:48:07.0234251Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.0235300Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.0236632Z           |                                                                ^
2026-05-14T11:48:07.0237251Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.0237689Z       174 |   });
2026-05-14T11:48:07.0238028Z       175 | }
2026-05-14T11:48:07.0238837Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.0240095Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:38:9
2026-05-14T11:48:07.0240723Z 
2026-05-14T11:48:07.0241538Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0243049Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0244712Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0245268Z 
2026-05-14T11:48:07.0246274Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0247668Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T11:48:07.0249268Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0249807Z 
2026-05-14T11:48:07.0250659Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T11:48:07.0251604Z 
2026-05-14T11:48:07.0252348Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0253687Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0254952Z     Usage:
2026-05-14T11:48:07.0255169Z 
2026-05-14T11:48:07.0256563Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0257633Z 
2026-05-14T11:48:07.0258353Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0259118Z 
2026-05-14T11:48:07.0260299Z   3) [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-14T11:48:07.0261283Z 
2026-05-14T11:48:07.0261660Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-14T11:48:07.0262127Z 
2026-05-14T11:48:07.0278780Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0279468Z 
2026-05-14T11:48:07.0279746Z     Expected: > [32m15[39m
2026-05-14T11:48:07.0280305Z     Received:   [31m0[39m
2026-05-14T11:48:07.0280579Z 
2026-05-14T11:48:07.0280872Z       83 |     (after as number) - (before as number),
2026-05-14T11:48:07.0281696Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-14T11:48:07.0282411Z     > 85 |   ).toBeGreaterThan(15);
2026-05-14T11:48:07.0282834Z          |     ^
2026-05-14T11:48:07.0283149Z       86 | });
2026-05-14T11:48:07.0283491Z       87 |
2026-05-14T11:48:07.0284252Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-14T11:48:07.0284896Z 
2026-05-14T11:48:07.0285718Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0287656Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T11:48:07.0289214Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0289773Z 
2026-05-14T11:48:07.0290545Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0291811Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T11:48:07.0293250Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0293943Z 
2026-05-14T11:48:07.0294614Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T11:48:07.0295345Z 
2026-05-14T11:48:07.0296283Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0297547Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0298396Z     Usage:
2026-05-14T11:48:07.0298593Z 
2026-05-14T11:48:07.0299478Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0300660Z 
2026-05-14T11:48:07.0301387Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0301919Z 
2026-05-14T11:48:07.0302603Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0303158Z 
2026-05-14T11:48:07.0303496Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-14T11:48:07.0303919Z 
2026-05-14T11:48:07.0304603Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0305248Z 
2026-05-14T11:48:07.0305458Z     Expected: > [32m15[39m
2026-05-14T11:48:07.0305904Z     Received:   [31m0[39m
2026-05-14T11:48:07.0306595Z 
2026-05-14T11:48:07.0306854Z       83 |     (after as number) - (before as number),
2026-05-14T11:48:07.0307589Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-14T11:48:07.0308295Z     > 85 |   ).toBeGreaterThan(15);
2026-05-14T11:48:07.0308698Z          |     ^
2026-05-14T11:48:07.0308999Z       86 | });
2026-05-14T11:48:07.0309285Z       87 |
2026-05-14T11:48:07.0309969Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-14T11:48:07.0310590Z 
2026-05-14T11:48:07.0311302Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0312681Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0314136Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0314625Z 
2026-05-14T11:48:07.0315300Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0316848Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T11:48:07.0318265Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0318761Z 
2026-05-14T11:48:07.0319607Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T11:48:07.0320522Z 
2026-05-14T11:48:07.0321488Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0322788Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0323693Z     Usage:
2026-05-14T11:48:07.0323867Z 
2026-05-14T11:48:07.0324810Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0325780Z 
2026-05-14T11:48:07.0326673Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0327388Z 
2026-05-14T11:48:07.0328756Z   4) [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-14T11:48:07.0329869Z 
2026-05-14T11:48:07.0330487Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0331087Z 
2026-05-14T11:48:07.0331366Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.0331892Z     Expected: visible
2026-05-14T11:48:07.0332251Z     Timeout: 15000ms
2026-05-14T11:48:07.0332653Z     Error: element(s) not found
2026-05-14T11:48:07.0332920Z 
2026-05-14T11:48:07.0333047Z     Call log:
2026-05-14T11:48:07.0333612Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0334443Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.0334910Z 
2026-05-14T11:48:07.0334934Z 
2026-05-14T11:48:07.0335087Z        at fixtures.ts:172
2026-05-14T11:48:07.0335324Z 
2026-05-14T11:48:07.0335452Z       170 |  */
2026-05-14T11:48:07.0336384Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.0337406Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.0338250Z           |                                                                ^
2026-05-14T11:48:07.0338817Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.0339204Z       174 |   });
2026-05-14T11:48:07.0339518Z       175 | }
2026-05-14T11:48:07.0340273Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.0341495Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:32:13
2026-05-14T11:48:07.0342131Z 
2026-05-14T11:48:07.0342852Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0344110Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-1.png
2026-05-14T11:48:07.0345308Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0345735Z 
2026-05-14T11:48:07.0346509Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0347625Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-2.png
2026-05-14T11:48:07.0348885Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0349310Z 
2026-05-14T11:48:07.0349981Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/error-context.md
2026-05-14T11:48:07.0350712Z 
2026-05-14T11:48:07.0351297Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0352532Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-14T11:48:07.0353236Z     Usage:
2026-05-14T11:48:07.0353387Z 
2026-05-14T11:48:07.0354134Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-14T11:48:07.0354933Z 
2026-05-14T11:48:07.0355453Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0356350Z 
2026-05-14T11:48:07.0356896Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0357338Z 
2026-05-14T11:48:07.0357848Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0358334Z 
2026-05-14T11:48:07.0358496Z     Locator: locator('#username')
2026-05-14T11:48:07.0358845Z     Expected: visible
2026-05-14T11:48:07.0359163Z     Timeout: 15000ms
2026-05-14T11:48:07.0359485Z     Error: element(s) not found
2026-05-14T11:48:07.0359705Z 
2026-05-14T11:48:07.0359812Z     Call log:
2026-05-14T11:48:07.0360275Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0360853Z     [2m  - waiting for locator('#username')[22m
2026-05-14T11:48:07.0361138Z 
2026-05-14T11:48:07.0361146Z 
2026-05-14T11:48:07.0361620Z       37 |       // SOURCE: GameScene.ts onForceReset transitions to LoginScene with an eviction banner.
2026-05-14T11:48:07.0362572Z       38 |       // The force_reset s2c event causes A1 to leave the room and start LoginScene.
2026-05-14T11:48:07.0363430Z     > 39 |       await expect(pageA1.locator('#username')).toBeVisible({ timeout: 15_000 });
2026-05-14T11:48:07.0364106Z          |                                                 ^
2026-05-14T11:48:07.0364495Z       40 |     } finally {
2026-05-14T11:48:07.0364840Z       41 |       await ctxA1.close();
2026-05-14T11:48:07.0365233Z       42 |       await ctxA2.close();
2026-05-14T11:48:07.0365935Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:39:49
2026-05-14T11:48:07.0367383Z 
2026-05-14T11:48:07.0368004Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0369309Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0370835Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0371319Z 
2026-05-14T11:48:07.0371992Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0373354Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-2.png
2026-05-14T11:48:07.0374989Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0375870Z 
2026-05-14T11:48:07.0377085Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/error-context.md
2026-05-14T11:48:07.0377997Z 
2026-05-14T11:48:07.0378729Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0380052Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-14T11:48:07.0381389Z     Usage:
2026-05-14T11:48:07.0381648Z 
2026-05-14T11:48:07.0382623Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-14T11:48:07.0383666Z 
2026-05-14T11:48:07.0384339Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0384855Z 
2026-05-14T11:48:07.0385697Z   5) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall 
2026-05-14T11:48:07.0386756Z 
2026-05-14T11:48:07.0387640Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.0388810Z 
2026-05-14T11:48:07.0389110Z     Expected: [32mtrue[39m
2026-05-14T11:48:07.0389607Z     Received: [31mfalse[39m
2026-05-14T11:48:07.0389890Z 
2026-05-14T11:48:07.0390377Z       127 |     // SOURCE: CLI-08 MVP gate requires a logged-in Chrome client to move under
2026-05-14T11:48:07.0391345Z       128 |     // held WASD input before collision boundaries are evaluated.
2026-05-14T11:48:07.0392263Z     > 129 |     expect(edge.moved(after[edge.axis], before[edge.axis])).toBe(true);
2026-05-14T11:48:07.0393108Z           |                                                             ^
2026-05-14T11:48:07.0393728Z       130 |     edge.assertBlocked(after[edge.axis]);
2026-05-14T11:48:07.0394153Z       131 |   });
2026-05-14T11:48:07.0394466Z       132 | }
2026-05-14T11:48:07.0395173Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:129:61
2026-05-14T11:48:07.0395796Z 
2026-05-14T11:48:07.0396822Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0398163Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/test-failed-1.png
2026-05-14T11:48:07.0399664Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0400231Z 
2026-05-14T11:48:07.0401001Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0402267Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/video.webm
2026-05-14T11:48:07.0403635Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0404136Z 
2026-05-14T11:48:07.0404939Z     Error Context: test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/error-context.md
2026-05-14T11:48:07.0406292Z 
2026-05-14T11:48:07.0407031Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0408257Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/trace.zip
2026-05-14T11:48:07.0409100Z     Usage:
2026-05-14T11:48:07.0409505Z 
2026-05-14T11:48:07.0410405Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/trace.zip
2026-05-14T11:48:07.0411346Z 
2026-05-14T11:48:07.0411965Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0412470Z 
2026-05-14T11:48:07.0413088Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0413597Z 
2026-05-14T11:48:07.0414216Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0414802Z 
2026-05-14T11:48:07.0415085Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.0415600Z     Expected: visible
2026-05-14T11:48:07.0415948Z     Timeout: 15000ms
2026-05-14T11:48:07.0416735Z     Error: element(s) not found
2026-05-14T11:48:07.0417015Z 
2026-05-14T11:48:07.0417166Z     Call log:
2026-05-14T11:48:07.0417775Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0418638Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.0419093Z 
2026-05-14T11:48:07.0419104Z 
2026-05-14T11:48:07.0419251Z        at fixtures.ts:172
2026-05-14T11:48:07.0419489Z 
2026-05-14T11:48:07.0419609Z       170 |  */
2026-05-14T11:48:07.0420208Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.0421181Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.0422019Z           |                                                                ^
2026-05-14T11:48:07.0422563Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.0422936Z       174 |   });
2026-05-14T11:48:07.0423238Z       175 | }
2026-05-14T11:48:07.0423990Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.0425444Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:24:9)
2026-05-14T11:48:07.0427120Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:119:5
2026-05-14T11:48:07.0427824Z 
2026-05-14T11:48:07.0428536Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0429898Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0431364Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0432070Z 
2026-05-14T11:48:07.0432757Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0434042Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/video.webm
2026-05-14T11:48:07.0435448Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0436479Z 
2026-05-14T11:48:07.0437387Z     Error Context: test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/error-context.md
2026-05-14T11:48:07.0438321Z 
2026-05-14T11:48:07.0439034Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0440336Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0441257Z     Usage:
2026-05-14T11:48:07.0441466Z 
2026-05-14T11:48:07.0442421Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0443436Z 
2026-05-14T11:48:07.0444054Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0444542Z 
2026-05-14T11:48:07.0445342Z   6) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall 
2026-05-14T11:48:07.0446245Z 
2026-05-14T11:48:07.0447078Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.0447787Z 
2026-05-14T11:48:07.0448008Z     Expected: [32mtrue[39m
2026-05-14T11:48:07.0448472Z     Received: [31mfalse[39m
2026-05-14T11:48:07.0448730Z 
2026-05-14T11:48:07.0449200Z       127 |     // SOURCE: CLI-08 MVP gate requires a logged-in Chrome client to move under
2026-05-14T11:48:07.0450118Z       128 |     // held WASD input before collision boundaries are evaluated.
2026-05-14T11:48:07.0451017Z     > 129 |     expect(edge.moved(after[edge.axis], before[edge.axis])).toBe(true);
2026-05-14T11:48:07.0451782Z           |                                                             ^
2026-05-14T11:48:07.0452392Z       130 |     edge.assertBlocked(after[edge.axis]);
2026-05-14T11:48:07.0452875Z       131 |   });
2026-05-14T11:48:07.0453200Z       132 | }
2026-05-14T11:48:07.0453995Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:129:61
2026-05-14T11:48:07.0454687Z 
2026-05-14T11:48:07.0455378Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0456947Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/test-failed-1.png
2026-05-14T11:48:07.0458354Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0459019Z 
2026-05-14T11:48:07.0459618Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0460659Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/video.webm
2026-05-14T11:48:07.0461809Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0462228Z 
2026-05-14T11:48:07.0463147Z     Error Context: test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/error-context.md
2026-05-14T11:48:07.0463951Z 
2026-05-14T11:48:07.0464537Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0465573Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/trace.zip
2026-05-14T11:48:07.0466491Z     Usage:
2026-05-14T11:48:07.0466643Z 
2026-05-14T11:48:07.0467405Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/trace.zip
2026-05-14T11:48:07.0468244Z 
2026-05-14T11:48:07.0468774Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0469194Z 
2026-05-14T11:48:07.0469718Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0470148Z 
2026-05-14T11:48:07.0470850Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.0471450Z 
2026-05-14T11:48:07.0471628Z     Expected: [32mtrue[39m
2026-05-14T11:48:07.0472008Z     Received: [31mfalse[39m
2026-05-14T11:48:07.0472220Z 
2026-05-14T11:48:07.0472609Z       127 |     // SOURCE: CLI-08 MVP gate requires a logged-in Chrome client to move under
2026-05-14T11:48:07.0473378Z       128 |     // held WASD input before collision boundaries are evaluated.
2026-05-14T11:48:07.0474124Z     > 129 |     expect(edge.moved(after[edge.axis], before[edge.axis])).toBe(true);
2026-05-14T11:48:07.0474795Z           |                                                             ^
2026-05-14T11:48:07.0475312Z       130 |     edge.assertBlocked(after[edge.axis]);
2026-05-14T11:48:07.0475709Z       131 |   });
2026-05-14T11:48:07.0476236Z       132 | }
2026-05-14T11:48:07.0476910Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:129:61
2026-05-14T11:48:07.0477516Z 
2026-05-14T11:48:07.0478104Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0479267Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0480505Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0480926Z 
2026-05-14T11:48:07.0481486Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0482742Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/video.webm
2026-05-14T11:48:07.0483938Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0484356Z 
2026-05-14T11:48:07.0485100Z     Error Context: test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/error-context.md
2026-05-14T11:48:07.0486242Z 
2026-05-14T11:48:07.0486837Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0487936Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0488708Z     Usage:
2026-05-14T11:48:07.0488857Z 
2026-05-14T11:48:07.0489671Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0490564Z 
2026-05-14T11:48:07.0491118Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0491614Z 
2026-05-14T11:48:07.0492487Z   7) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-14T11:48:07.0493333Z 
2026-05-14T11:48:07.0494180Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.0494891Z 
2026-05-14T11:48:07.0495110Z     Expected: [32mtrue[39m
2026-05-14T11:48:07.0495565Z     Received: [31mfalse[39m
2026-05-14T11:48:07.0495823Z 
2026-05-14T11:48:07.0496626Z       127 |     // SOURCE: CLI-08 MVP gate requires a logged-in Chrome client to move under
2026-05-14T11:48:07.0497549Z       128 |     // held WASD input before collision boundaries are evaluated.
2026-05-14T11:48:07.0498622Z     > 129 |     expect(edge.moved(after[edge.axis], before[edge.axis])).toBe(true);
2026-05-14T11:48:07.0499467Z           |                                                             ^
2026-05-14T11:48:07.0500129Z       130 |     edge.assertBlocked(after[edge.axis]);
2026-05-14T11:48:07.0500597Z       131 |   });
2026-05-14T11:48:07.0500894Z       132 | }
2026-05-14T11:48:07.0501677Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:129:61
2026-05-14T11:48:07.0502381Z 
2026-05-14T11:48:07.0503084Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0504661Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/test-failed-1.png
2026-05-14T11:48:07.0506314Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0506802Z 
2026-05-14T11:48:07.0507480Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0509020Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/video.webm
2026-05-14T11:48:07.0510336Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0510825Z 
2026-05-14T11:48:07.0511669Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/error-context.md
2026-05-14T11:48:07.0512796Z 
2026-05-14T11:48:07.0513577Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0514858Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-14T11:48:07.0515721Z     Usage:
2026-05-14T11:48:07.0515906Z 
2026-05-14T11:48:07.0517235Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-14T11:48:07.0518224Z 
2026-05-14T11:48:07.0518886Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0519398Z 
2026-05-14T11:48:07.0520086Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0520616Z 
2026-05-14T11:48:07.0521273Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0521889Z 
2026-05-14T11:48:07.0522238Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.0522771Z     Expected: visible
2026-05-14T11:48:07.0523163Z     Timeout: 15000ms
2026-05-14T11:48:07.0523585Z     Error: element(s) not found
2026-05-14T11:48:07.0523876Z 
2026-05-14T11:48:07.0524014Z     Call log:
2026-05-14T11:48:07.0524661Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0525509Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.0525966Z 
2026-05-14T11:48:07.0526185Z 
2026-05-14T11:48:07.0526349Z        at fixtures.ts:172
2026-05-14T11:48:07.0526629Z 
2026-05-14T11:48:07.0526758Z       170 |  */
2026-05-14T11:48:07.0527367Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.0528206Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.0528904Z           |                                                                ^
2026-05-14T11:48:07.0529380Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.0529702Z       174 |   });
2026-05-14T11:48:07.0529963Z       175 | }
2026-05-14T11:48:07.0530743Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.0532236Z         at loginAndAssertTiles (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:24:9)
2026-05-14T11:48:07.0533757Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:119:5
2026-05-14T11:48:07.0534482Z 
2026-05-14T11:48:07.0535461Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0537258Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0538743Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0539254Z 
2026-05-14T11:48:07.0540144Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0541435Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/video.webm
2026-05-14T11:48:07.0542840Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0543337Z 
2026-05-14T11:48:07.0544198Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/error-context.md
2026-05-14T11:48:07.0545162Z 
2026-05-14T11:48:07.0545865Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0547446Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0548356Z     Usage:
2026-05-14T11:48:07.0548535Z 
2026-05-14T11:48:07.0549486Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/trace.zip
2026-05-14T11:48:07.0550496Z 
2026-05-14T11:48:07.0551133Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0551635Z 
2026-05-14T11:48:07.0552675Z   8) [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-14T11:48:07.0553575Z 
2026-05-14T11:48:07.0558632Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-14T11:48:07.0562392Z 
2026-05-14T11:48:07.0563183Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0563899Z 
2026-05-14T11:48:07.0564111Z     Expected: >= [32m3[39m
2026-05-14T11:48:07.0564557Z     Received:    [31m1[39m
2026-05-14T11:48:07.0564808Z 
2026-05-14T11:48:07.0565190Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-14T11:48:07.0566664Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-14T11:48:07.0567820Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T11:48:07.0568280Z          |     ^
2026-05-14T11:48:07.0568585Z       86 |
2026-05-14T11:48:07.0569431Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-14T11:48:07.0570409Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-14T11:48:07.0571640Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-14T11:48:07.0573282Z 
2026-05-14T11:48:07.0574035Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0575322Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/test-failed-1.png
2026-05-14T11:48:07.0576907Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0577432Z 
2026-05-14T11:48:07.0578108Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0579312Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/video.webm
2026-05-14T11:48:07.0580637Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0581160Z 
2026-05-14T11:48:07.0581959Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/error-context.md
2026-05-14T11:48:07.0582832Z 
2026-05-14T11:48:07.0583550Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0584657Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-14T11:48:07.0585371Z     Usage:
2026-05-14T11:48:07.0585516Z 
2026-05-14T11:48:07.0586462Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-14T11:48:07.0587291Z 
2026-05-14T11:48:07.0587845Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0588269Z 
2026-05-14T11:48:07.0588804Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0589243Z 
2026-05-14T11:48:07.0593441Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-14T11:48:07.0597187Z 
2026-05-14T11:48:07.0597858Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0598449Z 
2026-05-14T11:48:07.0598631Z     Expected: >= [32m3[39m
2026-05-14T11:48:07.0599008Z     Received:    [31m1[39m
2026-05-14T11:48:07.0599211Z 
2026-05-14T11:48:07.0599536Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-14T11:48:07.0600776Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-14T11:48:07.0601547Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T11:48:07.0601918Z          |     ^
2026-05-14T11:48:07.0602176Z       86 |
2026-05-14T11:48:07.0602876Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-14T11:48:07.0603703Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-14T11:48:07.0604582Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-14T11:48:07.0605137Z 
2026-05-14T11:48:07.0605728Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0607059Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0608453Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0608982Z 
2026-05-14T11:48:07.0609702Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0610952Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/video.webm
2026-05-14T11:48:07.0612369Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0612852Z 
2026-05-14T11:48:07.0613886Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/error-context.md
2026-05-14T11:48:07.0614930Z 
2026-05-14T11:48:07.0615645Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0617378Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0618383Z     Usage:
2026-05-14T11:48:07.0618565Z 
2026-05-14T11:48:07.0619612Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0620648Z 
2026-05-14T11:48:07.0621294Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0621808Z 
2026-05-14T11:48:07.0622960Z   9) [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) 
2026-05-14T11:48:07.0624196Z 
2026-05-14T11:48:07.0624868Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0625443Z 
2026-05-14T11:48:07.0625745Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.0626551Z     Expected: visible
2026-05-14T11:48:07.0626948Z     Timeout: 15000ms
2026-05-14T11:48:07.0627386Z     Error: element(s) not found
2026-05-14T11:48:07.0627915Z 
2026-05-14T11:48:07.0628060Z     Call log:
2026-05-14T11:48:07.0628654Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.0629430Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.0629818Z 
2026-05-14T11:48:07.0629826Z 
2026-05-14T11:48:07.0629952Z        at fixtures.ts:172
2026-05-14T11:48:07.0630154Z 
2026-05-14T11:48:07.0630256Z       170 |  */
2026-05-14T11:48:07.0630825Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.0631860Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.0632775Z           |                                                                ^
2026-05-14T11:48:07.0633384Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.0633811Z       174 |   });
2026-05-14T11:48:07.0634126Z       175 | }
2026-05-14T11:48:07.0634861Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.0636441Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-nameplate.e2e.test.ts:39:11
2026-05-14T11:48:07.0637088Z 
2026-05-14T11:48:07.0637835Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0639133Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T11:48:07.0640514Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0641016Z 
2026-05-14T11:48:07.0641698Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0642964Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/test-failed-2.png
2026-05-14T11:48:07.0644361Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0644875Z 
2026-05-14T11:48:07.0645620Z     Error Context: test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T11:48:07.0646573Z 
2026-05-14T11:48:07.0647191Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0648235Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0648939Z     Usage:
2026-05-14T11:48:07.0649083Z 
2026-05-14T11:48:07.0649821Z         pnpm exec playwright show-trace test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0650637Z 
2026-05-14T11:48:07.0651161Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0651580Z 
2026-05-14T11:48:07.0652104Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0652757Z 
2026-05-14T11:48:07.0653276Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-14T11:48:07.0653770Z 
2026-05-14T11:48:07.0654189Z     Locator: locator('[data-nameplate="***"]')
2026-05-14T11:48:07.0654603Z     Expected: attached
2026-05-14T11:48:07.0654901Z     Timeout: 10000ms
2026-05-14T11:48:07.0655226Z     Error: element(s) not found
2026-05-14T11:48:07.0655451Z 
2026-05-14T11:48:07.0655558Z     Call log:
2026-05-14T11:48:07.0656296Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-14T11:48:07.0657228Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-14T11:48:07.0657583Z 
2026-05-14T11:48:07.0657593Z 
2026-05-14T11:48:07.0657752Z       46 |     await expect(
2026-05-14T11:48:07.0658375Z       47 |       a.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-14T11:48:07.0659058Z     > 48 |     ).toBeAttached({ timeout: 10_000 });
2026-05-14T11:48:07.0659518Z          |       ^
2026-05-14T11:48:07.0659847Z       49 |
2026-05-14T11:48:07.0660219Z       50 |     const localColor = await a
2026-05-14T11:48:07.0660901Z       51 |       .locator(`[data-nameplate="${accountA.username}"]`)
2026-05-14T11:48:07.0662050Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-nameplate.e2e.test.ts:48:7
2026-05-14T11:48:07.0662737Z 
2026-05-14T11:48:07.0663549Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0664991Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.0666823Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0667359Z 
2026-05-14T11:48:07.0668097Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0669415Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/test-failed-2.png
2026-05-14T11:48:07.0670932Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0671413Z 
2026-05-14T11:48:07.0672286Z     Error Context: test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T11:48:07.0673222Z 
2026-05-14T11:48:07.0673967Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0675315Z     test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0676911Z     Usage:
2026-05-14T11:48:07.0677102Z 
2026-05-14T11:48:07.0678066Z         pnpm exec playwright show-trace test-results/cli-08-nameplate.e2e-CLI-0-0c7f8-e-FFFFFF-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.0679087Z 
2026-05-14T11:48:07.0679746Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0680476Z 
2026-05-14T11:48:07.0681482Z   10) [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-14T11:48:07.0682369Z 
2026-05-14T11:48:07.0683080Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-14T11:48:07.0683844Z 
2026-05-14T11:48:07.0684560Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0685220Z 
2026-05-14T11:48:07.0685442Z     Expected: > [32m0[39m
2026-05-14T11:48:07.0685889Z     Received:   [31m0[39m
2026-05-14T11:48:07.0686371Z 
2026-05-14T11:48:07.0686519Z     Call Log:
2026-05-14T11:48:07.0687067Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-14T11:48:07.0687496Z 
2026-05-14T11:48:07.0687994Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-14T11:48:07.0689035Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-14T11:48:07.0689623Z     > 57 |   await expect
2026-05-14T11:48:07.0689958Z          |   ^
2026-05-14T11:48:07.0690268Z       58 |     .poll(
2026-05-14T11:48:07.0690601Z       59 |       async () =>
2026-05-14T11:48:07.0691016Z       60 |         page.evaluate(
2026-05-14T11:48:07.0691786Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-14T11:48:07.0692369Z 
2026-05-14T11:48:07.0693232Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.0694534Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T11:48:07.0695843Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0696672Z 
2026-05-14T11:48:07.0697346Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0698505Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T11:48:07.0699911Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0700362Z 
2026-05-14T11:48:07.0701081Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T11:48:07.0701854Z 
2026-05-14T11:48:07.0702610Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.0703840Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0704606Z     Usage:
2026-05-14T11:48:07.0704770Z 
2026-05-14T11:48:07.0705569Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T11:48:07.0707014Z 
2026-05-14T11:48:07.0707675Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0708181Z 
2026-05-14T11:48:07.0708806Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.0709300Z 
2026-05-14T11:48:07.0709993Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-14T11:48:07.0710745Z 
2026-05-14T11:48:07.0711453Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.0712318Z 
2026-05-14T11:48:07.0712543Z     Expected: > [32m0[39m
2026-05-14T11:48:07.0712991Z     Received:   [31m0[39m
2026-05-14T11:48:07.0713226Z 
2026-05-14T11:48:07.0713361Z     Call Log:
2026-05-14T11:48:07.0713869Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-14T11:48:07.0714307Z 
2026-05-14T11:48:07.0714769Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-14T11:48:07.0715753Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-14T11:48:07.0716918Z     > 57 |   await expect
2026-05-14T11:48:07.0717293Z          |   ^
2026-05-14T11:48:07.0717580Z       58 |     .poll(
2026-05-14T11:48:07.0717895Z       59 |       async () =>
2026-05-14T11:48:07.0718254Z       60 |         page.evaluate(
2026-05-14T11:48:07.0719009Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-14T11:48:07.0719605Z 
2026-05-14T11:48:07.3686731Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3697915Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.3699835Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3700640Z 
2026-05-14T11:48:07.3701568Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3703154Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T11:48:07.3704921Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3705663Z 
2026-05-14T11:48:07.3707358Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T11:48:07.3708622Z 
2026-05-14T11:48:07.3709592Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3711185Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.3712386Z     Usage:
2026-05-14T11:48:07.3712716Z 
2026-05-14T11:48:07.3713920Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T11:48:07.3715804Z 
2026-05-14T11:48:07.3717506Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3718147Z 
2026-05-14T11:48:07.3720767Z   11) [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-14T11:48:07.3721738Z 
2026-05-14T11:48:07.3722564Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-14T11:48:07.3723508Z 
2026-05-14T11:48:07.3724128Z     Locator: locator('[data-nameplate="***"]')
2026-05-14T11:48:07.3724727Z     Expected: attached
2026-05-14T11:48:07.3727086Z     Timeout: 10000ms
2026-05-14T11:48:07.3727655Z     Error: element(s) not found
2026-05-14T11:48:07.3728074Z 
2026-05-14T11:48:07.3728299Z     Call log:
2026-05-14T11:48:07.3729016Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-14T11:48:07.3730039Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-14T11:48:07.3730550Z 
2026-05-14T11:48:07.3730685Z 
2026-05-14T11:48:07.3730929Z       53 |     await expect(
2026-05-14T11:48:07.3731613Z       54 |       a.locator(`[data-nameplate="${accountB.username}"]`),
2026-05-14T11:48:07.3732415Z     > 55 |     ).toBeAttached({ timeout: 10_000 });
2026-05-14T11:48:07.3732974Z          |       ^
2026-05-14T11:48:07.3733437Z       56 |     await expect(
2026-05-14T11:48:07.3734102Z       57 |       b.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-14T11:48:07.3735143Z       58 |     ).toBeAttached({ timeout: 10_000 });
2026-05-14T11:48:07.3736526Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:55:7
2026-05-14T11:48:07.3737339Z 
2026-05-14T11:48:07.3738294Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3739828Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-1.png
2026-05-14T11:48:07.3741436Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3742070Z 
2026-05-14T11:48:07.3742935Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3744342Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-2.png
2026-05-14T11:48:07.3745928Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3746939Z 
2026-05-14T11:48:07.3747897Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/error-context.md
2026-05-14T11:48:07.3748927Z 
2026-05-14T11:48:07.3749840Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3751515Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-14T11:48:07.3752863Z     Usage:
2026-05-14T11:48:07.3753128Z 
2026-05-14T11:48:07.3754070Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-14T11:48:07.3755102Z 
2026-05-14T11:48:07.3755909Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3756868Z 
2026-05-14T11:48:07.3757672Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3758554Z 
2026-05-14T11:48:07.3759356Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeAttached[2m([22m[2m)[22m failed
2026-05-14T11:48:07.3760030Z 
2026-05-14T11:48:07.3760457Z     Locator: locator('[data-nameplate="***"]')
2026-05-14T11:48:07.3761025Z     Expected: attached
2026-05-14T11:48:07.3761494Z     Timeout: 10000ms
2026-05-14T11:48:07.3761984Z     Error: element(s) not found
2026-05-14T11:48:07.3762366Z 
2026-05-14T11:48:07.3762574Z     Call log:
2026-05-14T11:48:07.3763210Z     [2m  - Expect "toBeAttached" with timeout 10000ms[22m
2026-05-14T11:48:07.3764140Z     [2m  - waiting for locator('[data-nameplate="***"]')[22m
2026-05-14T11:48:07.3764631Z 
2026-05-14T11:48:07.3764759Z 
2026-05-14T11:48:07.3764986Z       53 |     await expect(
2026-05-14T11:48:07.3765635Z       54 |       a.locator(`[data-nameplate="${accountB.username}"]`),
2026-05-14T11:48:07.3766627Z     > 55 |     ).toBeAttached({ timeout: 10_000 });
2026-05-14T11:48:07.3767220Z          |       ^
2026-05-14T11:48:07.3767680Z       56 |     await expect(
2026-05-14T11:48:07.3768375Z       57 |       b.locator(`[data-nameplate="${accountA.username}"]`),
2026-05-14T11:48:07.3769159Z       58 |     ).toBeAttached({ timeout: 10_000 });
2026-05-14T11:48:07.3770040Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:55:7
2026-05-14T11:48:07.3770747Z 
2026-05-14T11:48:07.3771630Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3773122Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.3775643Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3776697Z 
2026-05-14T11:48:07.3777683Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3781712Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-2.png
2026-05-14T11:48:07.3783550Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3784236Z 
2026-05-14T11:48:07.3785301Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/error-context.md
2026-05-14T11:48:07.3786969Z 
2026-05-14T11:48:07.3788776Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3790307Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-14T11:48:07.3791458Z     Usage:
2026-05-14T11:48:07.3791826Z 
2026-05-14T11:48:07.3793010Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-14T11:48:07.3794223Z 
2026-05-14T11:48:07.3795316Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3796243Z 
2026-05-14T11:48:07.3797524Z   12) [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-14T11:48:07.3798631Z 
2026-05-14T11:48:07.3799733Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.3800681Z 
2026-05-14T11:48:07.3801196Z     Expected: [32m"mvp-room"[39m
2026-05-14T11:48:07.3801900Z     Received: [31m""[39m
2026-05-14T11:48:07.3802302Z 
2026-05-14T11:48:07.3802886Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-14T11:48:07.3803763Z       43 |   );
2026-05-14T11:48:07.3804398Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-14T11:48:07.3805136Z          |                            ^
2026-05-14T11:48:07.3805744Z       45 |
2026-05-14T11:48:07.3806600Z       46 |   const loadedTextures = await page.evaluate(
2026-05-14T11:48:07.3807299Z       47 |     () =>
2026-05-14T11:48:07.3808218Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-14T11:48:07.3809030Z 
2026-05-14T11:48:07.3809985Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3811588Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/test-failed-1.png
2026-05-14T11:48:07.3813288Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3814009Z 
2026-05-14T11:48:07.3814929Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3816630Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/video.webm
2026-05-14T11:48:07.3818320Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3819050Z 
2026-05-14T11:48:07.3820158Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/error-context.md
2026-05-14T11:48:07.3821275Z 
2026-05-14T11:48:07.3822248Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3823985Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-14T11:48:07.3825129Z     Usage:
2026-05-14T11:48:07.3825462Z 
2026-05-14T11:48:07.3826770Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-14T11:48:07.3827992Z 
2026-05-14T11:48:07.3828854Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3829514Z 
2026-05-14T11:48:07.3830325Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3831287Z 
2026-05-14T11:48:07.3832309Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.3833164Z 
2026-05-14T11:48:07.3833607Z     Expected: [32m"mvp-room"[39m
2026-05-14T11:48:07.3834250Z     Received: [31m""[39m
2026-05-14T11:48:07.3834666Z 
2026-05-14T11:48:07.3835226Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-14T11:48:07.3836308Z       43 |   );
2026-05-14T11:48:07.3836979Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-14T11:48:07.3837758Z          |                            ^
2026-05-14T11:48:07.3838343Z       45 |
2026-05-14T11:48:07.3838980Z       46 |   const loadedTextures = await page.evaluate(
2026-05-14T11:48:07.3839676Z       47 |     () =>
2026-05-14T11:48:07.3840598Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-14T11:48:07.3841452Z 
2026-05-14T11:48:07.3842378Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3844017Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.3845837Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3846870Z 
2026-05-14T11:48:07.3847766Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3849562Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/video.webm
2026-05-14T11:48:07.3851318Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3852049Z 
2026-05-14T11:48:07.3853111Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/error-context.md
2026-05-14T11:48:07.3854301Z 
2026-05-14T11:48:07.3855272Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3857117Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-14T11:48:07.3858309Z     Usage:
2026-05-14T11:48:07.3858669Z 
2026-05-14T11:48:07.3860087Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-14T11:48:07.3861352Z 
2026-05-14T11:48:07.3862236Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3862944Z 
2026-05-14T11:48:07.3864245Z   13) [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-14T11:48:07.3865383Z 
2026-05-14T11:48:07.3867114Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.3867905Z 
2026-05-14T11:48:07.3868449Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-14T11:48:07.3869201Z     Expected: visible
2026-05-14T11:48:07.3869755Z     Timeout: 5000ms
2026-05-14T11:48:07.3870320Z     Error: element(s) not found
2026-05-14T11:48:07.3870750Z 
2026-05-14T11:48:07.3871045Z     Call log:
2026-05-14T11:48:07.3871822Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-14T11:48:07.3873003Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-14T11:48:07.3873741Z 
2026-05-14T11:48:07.3873867Z 
2026-05-14T11:48:07.3874141Z       36 |
2026-05-14T11:48:07.3874903Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-14T11:48:07.3876413Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-14T11:48:07.3877565Z          |                                                                           ^
2026-05-14T11:48:07.3878361Z       39 |       timeout: 5_000,
2026-05-14T11:48:07.3878932Z       40 |     });
2026-05-14T11:48:07.3879437Z       41 |
2026-05-14T11:48:07.3880275Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-14T11:48:07.3881056Z 
2026-05-14T11:48:07.3881970Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3883588Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/test-failed-1.png
2026-05-14T11:48:07.3885296Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3886426Z 
2026-05-14T11:48:07.3887358Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3888885Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/video.webm
2026-05-14T11:48:07.3890645Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3891342Z 
2026-05-14T11:48:07.3892381Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/error-context.md
2026-05-14T11:48:07.3893612Z 
2026-05-14T11:48:07.3894618Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3896407Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-14T11:48:07.3897521Z     Usage:
2026-05-14T11:48:07.3897866Z 
2026-05-14T11:48:07.3898923Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-14T11:48:07.3900050Z 
2026-05-14T11:48:07.3900948Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3901905Z 
2026-05-14T11:48:07.3902761Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3903471Z 
2026-05-14T11:48:07.3904374Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.3905136Z 
2026-05-14T11:48:07.3905632Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-14T11:48:07.3907081Z     Expected: visible
2026-05-14T11:48:07.3907663Z     Timeout: 5000ms
2026-05-14T11:48:07.3908232Z     Error: element(s) not found
2026-05-14T11:48:07.3908668Z 
2026-05-14T11:48:07.3908948Z     Call log:
2026-05-14T11:48:07.3909724Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-14T11:48:07.3910895Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-14T11:48:07.3911598Z 
2026-05-14T11:48:07.3911725Z 
2026-05-14T11:48:07.3911971Z       36 |
2026-05-14T11:48:07.3912643Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-14T11:48:07.3913689Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-14T11:48:07.3914618Z          |                                                                           ^
2026-05-14T11:48:07.3915237Z       39 |       timeout: 5_000,
2026-05-14T11:48:07.3915715Z       40 |     });
2026-05-14T11:48:07.3916513Z       41 |
2026-05-14T11:48:07.3917362Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-14T11:48:07.3918065Z 
2026-05-14T11:48:07.3919148Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3920753Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.3922489Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3923206Z 
2026-05-14T11:48:07.3924075Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3925567Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/video.webm
2026-05-14T11:48:07.3927449Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3928158Z 
2026-05-14T11:48:07.3929475Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/error-context.md
2026-05-14T11:48:07.3930620Z 
2026-05-14T11:48:07.3931537Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3933049Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-14T11:48:07.3934157Z     Usage:
2026-05-14T11:48:07.3934471Z 
2026-05-14T11:48:07.3935654Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-14T11:48:07.3937406Z 
2026-05-14T11:48:07.3938241Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3938959Z 
2026-05-14T11:48:07.3940629Z   14) [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-14T11:48:07.3942207Z 
2026-05-14T11:48:07.3943127Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoMatch[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T11:48:07.3943922Z 
2026-05-14T11:48:07.3944480Z     Expected pattern: [32m/^0028-NaviRunR_\d{3}$/[39m
2026-05-14T11:48:07.3945382Z     Received string:  [31m"0000-NaviStandD_000"[39m
2026-05-14T11:48:07.3945935Z 
2026-05-14T11:48:07.3946462Z       32 |
2026-05-14T11:48:07.3947195Z       33 |     // Frame key must match Run R pattern: '0028-NaviRunR_NNN'
2026-05-14T11:48:07.3948243Z     > 34 |     expect(frameWhileRunning).toMatch(/^0028-NaviRunR_\d{3}$/);
2026-05-14T11:48:07.3949071Z          |                               ^
2026-05-14T11:48:07.3949668Z       35 |
2026-05-14T11:48:07.3950277Z       36 |     // Release right arrow and wait for stop
2026-05-14T11:48:07.3951068Z       37 |     await page.keyboard.up('ArrowRight');
2026-05-14T11:48:07.3952145Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:34:31
2026-05-14T11:48:07.3952928Z 
2026-05-14T11:48:07.3953812Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3955404Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/test-failed-1.png
2026-05-14T11:48:07.3957289Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3957900Z 
2026-05-14T11:48:07.3958841Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3960244Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/video.webm
2026-05-14T11:48:07.3961759Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3964356Z 
2026-05-14T11:48:07.3965508Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/error-context.md
2026-05-14T11:48:07.3967908Z 
2026-05-14T11:48:07.3968797Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.3969981Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-14T11:48:07.3970784Z     Usage:
2026-05-14T11:48:07.3970948Z 
2026-05-14T11:48:07.3971789Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-14T11:48:07.3972944Z 
2026-05-14T11:48:07.3973540Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3974012Z 
2026-05-14T11:48:07.3974581Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3975057Z 
2026-05-14T11:48:07.3975622Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T11:48:07.3977226Z 
2026-05-14T11:48:07.3978593Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T11:48:07.3979200Z     Expected: visible
2026-05-14T11:48:07.3979660Z     Timeout: 15000ms
2026-05-14T11:48:07.3980156Z     Error: element(s) not found
2026-05-14T11:48:07.3980521Z 
2026-05-14T11:48:07.3980747Z     Call log:
2026-05-14T11:48:07.3981499Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T11:48:07.3982425Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T11:48:07.3982955Z 
2026-05-14T11:48:07.3983052Z 
2026-05-14T11:48:07.3983283Z        at fixtures.ts:172
2026-05-14T11:48:07.3983596Z 
2026-05-14T11:48:07.3983806Z       170 |  */
2026-05-14T11:48:07.3984482Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T11:48:07.3985515Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T11:48:07.3986751Z           |                                                                ^
2026-05-14T11:48:07.3987413Z       173 |     timeout: 15_000,
2026-05-14T11:48:07.3987876Z       174 |   });
2026-05-14T11:48:07.3988279Z       175 | }
2026-05-14T11:48:07.3989053Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T11:48:07.3990272Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:22:11
2026-05-14T11:48:07.3990972Z 
2026-05-14T11:48:07.3992754Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.3994331Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/test-failed-1.png
2026-05-14T11:48:07.3995907Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3997321Z 
2026-05-14T11:48:07.3998123Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.3999532Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/video.webm
2026-05-14T11:48:07.4001041Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4001613Z 
2026-05-14T11:48:07.4002597Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/error-context.md
2026-05-14T11:48:07.4003727Z 
2026-05-14T11:48:07.4004539Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.4006424Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-14T11:48:07.4007477Z     Usage:
2026-05-14T11:48:07.4007742Z 
2026-05-14T11:48:07.4008751Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-14T11:48:07.4010000Z 
2026-05-14T11:48:07.4010752Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4011289Z 
2026-05-14T11:48:07.4012122Z   15) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall 
2026-05-14T11:48:07.4012883Z 
2026-05-14T11:48:07.4013710Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T11:48:07.4014444Z 
2026-05-14T11:48:07.4014724Z     Expected: [32mtrue[39m
2026-05-14T11:48:07.4015263Z     Received: [31mfalse[39m
2026-05-14T11:48:07.4015592Z 
2026-05-14T11:48:07.4016369Z       127 |     // SOURCE: CLI-08 MVP gate requires a logged-in Chrome client to move under
2026-05-14T11:48:07.4017321Z       128 |     // held WASD input before collision boundaries are evaluated.
2026-05-14T11:48:07.4032690Z     > 129 |     expect(edge.moved(after[edge.axis], before[edge.axis])).toBe(true);
2026-05-14T11:48:07.4033633Z           |                                                             ^
2026-05-14T11:48:07.4034356Z       130 |     edge.assertBlocked(after[edge.axis]);
2026-05-14T11:48:07.4034930Z       131 |   });
2026-05-14T11:48:07.4035335Z       132 | }
2026-05-14T11:48:07.4036508Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:129:61
2026-05-14T11:48:07.4037380Z 
2026-05-14T11:48:07.4038229Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T11:48:07.4039661Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/test-failed-1.png
2026-05-14T11:48:07.4041077Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4041625Z 
2026-05-14T11:48:07.4042363Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4043580Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/video.webm
2026-05-14T11:48:07.4044947Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4045489Z 
2026-05-14T11:48:07.4046635Z     Error Context: test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/error-context.md
2026-05-14T11:48:07.4047566Z 
2026-05-14T11:48:07.4048321Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T11:48:07.4049809Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/trace.zip
2026-05-14T11:48:07.4050707Z     Usage:
2026-05-14T11:48:07.4050968Z 
2026-05-14T11:48:07.4051882Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/trace.zip
2026-05-14T11:48:07.4052856Z 
2026-05-14T11:48:07.4053533Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T11:48:07.4054259Z 
2026-05-14T11:48:07.4054477Z   14 failed
2026-05-14T11:48:07.4055626Z     [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-14T11:48:07.4057788Z     [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-14T11:48:07.4059937Z     [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-14T11:48:07.4062180Z     [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-14T11:48:07.4063979Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall 
2026-05-14T11:48:07.4065573Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall 
2026-05-14T11:48:07.4067367Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-14T11:48:07.4069197Z     [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-14T11:48:07.4071099Z     [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) 
2026-05-14T11:48:07.4073140Z     [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-14T11:48:07.4075093Z     [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-14T11:48:07.4076988Z     [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-14T11:48:07.4078991Z     [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-14T11:48:07.4081374Z     [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-14T11:48:07.4082723Z   1 flaky
2026-05-14T11:48:07.4083712Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall 
2026-05-14T11:48:07.4084882Z   13 passed (8.1m)
2026-05-14T11:48:07.4233862Z /home/runner/work/rebno/rebno/apps/client:
2026-05-14T11:48:07.4235423Z  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @rebno/client@0.1.0 test:e2e: `playwright test`
2026-05-14T11:48:07.4236654Z Exit status 1
2026-05-14T11:48:07.4424482Z ##[error]Process completed with exit code 1.
